hive里面for循环

您所在的位置:网站首页 hivesql 定义变量 hive里面for循环

hive里面for循环

2023-08-27 11:30| 来源: 网络整理| 查看: 265

hive里面的fo循环 for do done这是固定的

for 用来遍历数据 do用来执行数据 done用来结束任务

#!/bin/bash #业务逻辑输入参数,此处很重要,需要根据实际业务情况认真设定!!!! for i in '20201111' '20201010' '20201212' do v_date=$i v_month=${v_date:0:6} v_day=${v_date:6:2} v_l_date=`date -d "- 1 day $v_date" "+%Y%m%d"` v_l_month=${v_l_date:0:6} v_l_day=${v_l_date:6:2} hive -e " set hive.exec.mode.local.auto=true; set hive.auto.convert.join=false; set hive.exec.mode.local.auto.input.files.max= 10; insert overwrite table dwd.dwd_d_evt_cb_trade_devfee partition (month_part = '$v_month', day_part = '$v_day') SELECT '$v_month', '$v_day', A.TRADE_ID ,--STRING comment '业务流水号', A.FEE_TYPE_CODE ,--STRING comment '费用类型编码', A.DEVICE_TYPE_CODE ,--STRING comment '设备类型编码', A.DEVICE_NO_S ,--STRING comment '起始设备编码', A.DEVICE_NO_E ,--STRING comment '结束设备编码', A.DEVICE_PRICE ,--DECIMAL(20,3) comment '设备单价', A.SALE_PRICE ,--DECIMAL(20,3) comment '实售价格', A.DEVICE_NUM ,--DECIMAL(20,3) comment '销售数量', C.DEVELOP_STAFF_ID ,-- '发展人', C.DEVELOP_DEPART_ID ,-- '发展渠道', B.ACCEPT_DATE ,-- '受理时间(台账主表历史)', B.TRADE_STAFF_ID ,-- '受理员工(台账主表历史)', B.TRADE_DEPART_ID ,-- '受理渠道(台账主表历史)', B.IN_MODE_CODE ,-- 'CBSS接入方式编码(台账主表历史)', B.CANCEL_FLAG ,-- '返销标志(台账主表历史)', B.CANCEL_time ,-- '返销时间', B.TRADE_AREA_ID ,-- '总部统一受理地州(台账主表历史)', B.AREA_ID -- '归属地市(台账主表历史)' FROM (SELECT * FROM ods.ODS_D_EVT_CB_TRADEFEE_DEVICE where month_part = '$v_month' and day_part = '$v_day') A left join (SELECT T.*, ROW_NUMBER() OVER(PARTITION BY TRADE_ID ORDER BY ACCEPT_DATE DESC) SN FROM dwd.DWD_D_EVT_CB_TRADE T where month_part = '$v_month' and day_part = '$v_day' ) B on A.TRADE_ID = B.TRADE_ID LEFT JOIN ( SELECT * from dwd.dwd_d_evt_cb_trade_develop where month_part = '$v_month' and day_part = '$v_day' ) C ON A.TRADE_ID = C.TRADE_ID; " done

通过以上的一个小案例可以看出 for 里面的数据直接用 ‘’ 标识,不需要加括号,也不需要加分隔符

do下面的sql就是执行的内容

最后的done就表示执行结束

这是我写的循环脚本中用到for

for v_date in `cat /home/hive/xj/xunhuan/data.txt` do sh /home/hive/xj/p_dwd_d_evt_cb_trade_devfee.sh $v_date > $LOG & echo "shell p_dwd_d_evt_cb_trade_devfee.sh $v_date successed"|tee -a $LOG done echo "shell p_dwd_d_evt_cb_trade_devfee.sh successed all"|tee -a $LOG

以上代码中,我在data.txt中写了三个账期参数 通过for把data脚本中的数据遍历出来 do执行脚本 done结束



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3